昨天介紹完 SwiftData 中建立模組以及定義其中屬性的 Macro,今天來介紹一下 SwiftData 中重要的東西,ModelContainer。
首先來介紹一下 ModelContainer,ModelContainer 是模組上下文和持久性儲存之間的代理程式,它會根據提供的模組創建資料庫。
那要如何建立 ModelContainer?有兩種方式,一種是單純的建立一個 ModelContainer,令外一種則是可以自定義 ModelContainer 的設定。
實際操作一次,這是比較簡單的方式,添加 .modelContainer(for: ) 這個 modifier 然後裡面放入要建立資料庫的模組。
import SwiftUI
import SwiftData
@main
struct SwiftDataExampleApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(for: [Expense.self])
}
}
另外一種建立方式,這種方式可以自定義你需要的 ModelContainer,包含各種設定,當然也能使用預設設定,定義好之後同樣使用 .modelContainer() 這個 modeifier,只是這次裡面要放的是你已經設定好的 ModelContainer。
import SwiftUI
import SwiftData
@main
struct SwiftDataExampleApp: App {
let container: ModelContainer = {
let schema = Schema([Expense.self])
// let cinfig = ModelConfiguration(name: String?,
// schema: Schema?,
// isStoredInMemoryOnly: Bool,
// allowsSave: Bool,
// groupContainer: ModelConfiguration.GroupContainer,
// cloudKitDatabase: ModelConfiguration.CloudKitDatabase)
let container = try! ModelContainer(for: schema, configurations: [])
return container
}()
var body: some Scene {
WindowGroup {
ContentView()
}
.modelContainer(container)
// .modelContainer(for: [Expense.self])
}
}
那到這裡 ModelContainer 設定好之後,接下來要處理的就是 ModelContext 的部分,ModelContext 會監控 Model 裡所有變動並且提供一系列操作讓人使用,那今天就先到這裡啦。